import os

import utils.fsutils as fsutils
from ocr_modules.textin.TextIn import TextIn
from utils import base64_utils


def w00_picture_trimming_correction(filepath):
    # 获取文件名(带后缀）
    file_name_ = os.path.basename(filepath)
    # 获取文件名(不带后缀）
    file_name = os.path.splitext(file_name_)[0]
    # 获取矫正后存放的目录
    dewarped_image_dir = fsutils.get_cache_path_for_category("矫正后的图片")
    #  获取 {.cache/矫正后的图片} 目录下所有文件
    dewarped_image_dir_list = fsutils.get_filepaths(dewarped_image_dir)
    # 判断是否已经存在，存在就跳过
    for i in dewarped_image_dir_list:
        if file_name == os.path.splitext(os.path.basename(i))[0]:
            print(f"{filepath} 跳过矫正，之前矫正过")
            return
    print(f"芜湖~ 将要把{filepath} 开始矫正处理")

    """     第一步：图片矫正，这里调用合合的接口        """

    # 将图片先做矫正处理，返回一个字典类型
    dewarp_result = TextIn().dewarp(image_path=filepath, crop=1, inpainting=1)

    # 如果调用不成功
    if dewarp_result['code'] != 200:
        print(f"图片矫正失败:{filepath},错误码：{dewarp_result['code']}原因：{dewarp_result['message']}")

    # 矫正成功会返回一个base64的字符串，先保存这个图片
    dewarped_image_path = os.path.join(".cache/矫正后的图片", file_name_)  # .cache/矫正后的图片/{file_name_}

    # 将base64的字符串转换为图片，并保存到{dewarped_image_path}
    base64_utils.base64_to_image(dewarp_result['result']['image'], dewarped_image_path)
